vlwkaos' digital garden

Rust - map, and, or, any, all

map, and_then for Option

  • Some(vec) 에 대해 왜 map을 두번?
    • map은 배열에 대해만 있느넥 아니라 클로져 함수 제공을 위한 역할
    • map이 안전하게 해줌
// .map(|some| some+1)

fn main() {
    let out = Some(vec![8,9,10]);
    let first = out
        .map(|v| {
            v.iter().map(|n| n+1).collect::<Vec<_>>()
        });
    println!("{first:?}");
    // json 없으면 생략할때 이런식으로 많이 함

    let s = out.map(|v| match v.len() {
        0 => None,
        1 => Some(vec![v[0]]),
        _ => Some(v)
    });
    // 계속 some, some 이런식으로 나오는 경우...
    // and_then을 쓴다. === flatmap
}

and, or

.and() / .or()
배열 같은 위치에 포개주는 기능
vec1 = vec![true, false, true]
vec2 = vec![false, false, false]
vec1.and(vec2) // false, false, false


any, all

  • any(|&c| char == check) 하나라도 조건 확인
  • all 전부다 이 조건을 만족?

reverse iterators

Referred in

Rust - map, and, or, any, all